1. Field of the Invention
This invention relates to USB device enumeration, and in particular, it relates to a process of USB device enumeration in which the USB device first detects the type of operating system (OS) on the USB host and then performs USB device enumeration using a process specific to the detected OS type.
2. Description of the Related Art
USB device enumeration is a process performed by a USB device and a USB host upon the device being connected to the host. The device enumeration process is repeated when the USB device is disconnected and re-connected to the host, or when the host is restated, etc. During the device enumeration process, the USB host collects device type and characteristics information from the USB device, and assigns an address to the USB device.
As an increasing number of devices are being designed as USB compliant devices (e.g. human interface devices, mass storage devices, audio devices, video devices, communication devices, printers, and numerous other classes of USB devices), USB hosts are often provided with corresponding abilities to communicate with these various types of USB devices. For example, RNDIS (Remote Network Driver Interface Specification) is a type of USB network interface device, which is supported on Windows™ XP and later Windows™ operating systems (OS); ISD (Internet Sharing Device) is a type of RNDIS, which is supported on Windows™ Vista™ and later Windows™ OS; and CDC/ECM (CDC Ethernet Control Model) is a type of USB network interface device, which is supported by MAC™ OS and Linux™. At the same time, as many computer platforms support USB, it is desirable for any given USB device to be able to be connected to and used with various different computer platforms. However, different OS's often support different USB device types, and the required device enumeration process may be different depending on the kind of host the device is connected to. For a given USB device, it is often difficult to use a single enumeration flow or sequence to satisfy all OS's.